মডেল টেস্টিং হল মেশিন লার্নিং মডেলের কার্যকারিতা মূল্যায়ন করার প্রক্রিয়া। এর মাধ্যমে আমরা জানতে পারি মডেলটি অদেখা ডেটার উপর কেমন পারফর্ম করছে। মডেল টেস্টিংয়ের বিভিন্ন পদ্ধতি রয়েছে, যা মডেলটির জেনারেলাইজেশন ক্ষমতা পরীক্ষা করতে ব্যবহৃত হয়। নিচে মডেল টেস্টিংয়ের কিছু জনপ্রিয় টেকনিকস বাংলা ভাষায় দেওয়া হলো।
Train-Test Split হল মডেল টেস্টিংয়ের একটি মৌলিক পদ্ধতি, যেখানে ডেটাসেটকে দুটি ভাগে ভাগ করা হয়: একটি প্রশিক্ষণের জন্য এবং অন্যটি মডেল পরীক্ষা করার জন্য।
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# ডেটাসেট ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# মডেল প্রশিক্ষণ
model = RandomForestClassifier()
model.fit(X_train, y_train)
# মডেল পরীক্ষা
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy * 100:.2f}%")
K-Fold Cross-Validation হল একটি উন্নত পদ্ধতি যা ডেটাসেটকে K ভাগে ভাগ করে এবং মডেলটি K বার ট্রেন এবং টেস্ট করা হয়। প্রতিটি ফোল্ডে, একটি ভাগ টেস্ট সেট হিসেবে এবং বাকি ভাগগুলি ট্রেনিং সেট হিসেবে ব্যবহৃত হয়।
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier
# ৫ ফোল্ডে ক্রস ভ্যালিডেশন
model = RandomForestClassifier()
cv_scores = cross_val_score(model, X, y, cv=5)
print(f"Cross-validation scores: {cv_scores}")
print(f"Mean cross-validation score: {cv_scores.mean():.2f}")
Leave-One-Out Cross-Validation (LOOCV) হল K-Fold Cross-Validation এর একটি বিশেষ রূপ যেখানে K হল ডেটাসেটের সাইজ, অর্থাৎ প্রতিটি সেশনে একটিকে টেস্ট সেল এবং বাকিরা ট্রেনিং সেল হিসেবে ব্যবহৃত হয়।
from sklearn.model_selection import LeaveOneOut
from sklearn.ensemble import RandomForestClassifier
# LOOCV
loocv = LeaveOneOut()
model = RandomForestClassifier()
for train_index, test_index in loocv.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
model.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy * 100:.2f}%")
Stratified K-Fold Cross-Validation হল K-Fold Cross-Validation এর একটি উন্নত রূপ যেখানে প্রতিটি ফোল্ডে শ্রেণির সমান অনুপাত নিশ্চিত করা হয়। এটি ক্লাস ইমব্যালেন্স সমস্যায় বিশেষভাবে উপকারী।
from sklearn.model_selection import StratifiedKFold
from sklearn.ensemble import RandomForestClassifier
# Stratified K-Fold Cross-Validation
strat_kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
model = RandomForestClassifier()
for train_index, test_index in strat_kfold.split(X, y):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
model.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy * 100:.2f}%")
Bootstrapping হল একটি রিসাম্পলিং টেকনিক যেখানে ডেটা থেকে পুনরায় স্যাম্পল নিয়ে ট্রেনিং করা হয়, এবং আউট-অফ-ব্যাগ ডেটা দিয়ে মডেলটি পরীক্ষা করা হয়। এটি সাধারণত Bagging মেথডে ব্যবহৃত হয়।
Confusion Matrix হল একটি টেবিল যা একটি শ্রেণীবিভাগ মডেলের কর্মক্ষমতা মূল্যায়ন করতে ব্যবহৃত হয়। এটি True Positives (TP), True Negatives (TN), False Positives (FP), এবং False Negatives (FN) এর মাধ্যমে মডেলটির কার্যকারিতা নির্ধারণ করে।
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt
y_pred = model.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", xticklabels=["Class 0", "Class 1"], yticklabels=["Class 0", "Class 1"])
plt.xlabel("Predicted")
plt.ylabel("True")
plt.title("Confusion Matrix")
plt.show()
মডেল টেস্টিংয়ের সময় Performance Metrics ব্যবহার করা হয়। এর মাধ্যমে মডেলের কার্যকারিতা পরিমাপ করা হয়। বিভিন্ন মেট্রিক্স ব্যবহার করা হয় যেমন:
মডেল টেস্টিংয়ের জন্য বিভিন্ন techniques ব্যবহার করা হয় যেমন Train-Test Split, Cross-Validation, Leave-One-Out Cross-Validation, এবং Bootstrapping। এই পদ্ধতিগুল
ির মাধ্যমে মডেলের কার্যকারিতা নির্ভরযোগ্যভাবে পরিমাপ করা হয়, যাতে মডেলটি অদেখা ডেটার উপর ভাল পারফর্ম করতে পারে। Confusion Matrix এবং Performance Metrics ব্যবহার করে আপনি মডেলের সঠিকতা, প্রিসিশন, রিকল এবং F1-স্কোর পরিমাপ করতে পারেন।
Read more